package com.tan.common.dto.user;

import com.tan.common.enums.MenuTypeEnum;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

/**
 * @author Tan-Bowen
 * @description
 * @date 2025/2/18 15:58
 */
@Data
public class MenuCreateDTO {

    /**
     * 父菜单ID
     */
    @NotNull(message = "上级菜单不能为空")
    private Long parentId;

    /**
     * 菜单名称
     */
    @NotBlank(message = "菜单名称不能为空")
    private String name;

    /**
     * 菜单类型(1:菜单 2:目录 3:外链 4:按钮)
     */
    @NotNull(message = "菜单类型不能为空")
    private MenuTypeEnum type;

    /**
     * 路由路径(浏览器地址栏路径)
     */
    private String path;

    /**
     * 组件路径(vue页面完整路径，省略.vue后缀)
     */
    private String component;

    /**
     * 权限标识
     */
    private String perm;

    /**
     * 显示状态(1-显示;0-隐藏)
     */
    private Boolean visible;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 菜单图标
     */
    private String icon;

    /**
     * 跳转路径
     */
    private String redirect;


    /**
     * 【目录】只有一个子路由是否始终显示(1:是 0:否)
     */
    private Integer alwaysShow;

    /**
     * 【菜单】是否开启页面缓存(1:是 0:否)
     */
    private Integer keepAlive;

    public void setType(Integer type) {
        this.type = MenuTypeEnum.parse(type);
    }
}
